package com.twb.system.common;

import com.twb.core.util.BeanUtils;
import com.twb.system.entity.twbDataDic.TwbDataDic;
import com.twb.system.service.ITwbDataDicService;
import com.twb.system.service.ITwbSysconfigService;
import com.twb.system.service.ITwbUserConfigService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @Title Global.java
 * @Description 全局变量
 *
 * @author DSY
 * @date 2014年8月14日 上午9:03:09
 */
@Component
public class SystemGlobal {

	@Autowired
	private ITwbDataDicService twbDataDicService;
	@Autowired
	private ITwbSysconfigService twbSysconfigService;
	@Autowired
	private ITwbUserConfigService twbUserConfigService;

	private static ITwbSysconfigService sysconfigService;
	private static ITwbDataDicService dataDicService;
	private static ITwbUserConfigService userConfigService;;

	@PostConstruct
	public void init() {
		dataDicService = twbDataDicService;
		sysconfigService = twbSysconfigService;
		userConfigService = twbUserConfigService;
	}

	/**
	 * @Title  sysConfig
	 * @Description 系统配置
	 *
	 * @return
	 *
	 * @author DSY
	 * @date 2018年2月22日 下午3:05:25
	 */
	public static String sysConfig(String sysName) {
		Map<String, String> map = sysconfigService.getRedisSysConfig();
		if (!BeanUtils.isNullOrEmpty(map)) {
			Object object = map.get(sysName);
			if (!BeanUtils.isNullOrEmpty(object)) {
				return object.toString();
			}
		}
		return "";
	}

	/**
	 * @Title  sysConfig
	 * @Description 系统配置
	 * 
	 * @return
	 * 
	 * @author DSY
	 * @date 2018年2月22日 下午3:32:25
	 */
	public static Map<String, String> sysConfig() {
		return sysconfigService.getRedisSysConfig();
	}


	/**
	 * @Title dataName 
	 * @Description 获取数据字典表 名称
	 * @param typeCode
	 * @param dataValue
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:57:42
	 */
	public static String dataName(String typeCode, String dataValue) {
		String dataName = null;
		List<TwbDataDic> list = dataDic(typeCode);
		if(dataValue.contains(",")) {
			String[] values = dataValue.split(",");
			List<String> dataNames = new ArrayList<String>();
			for (String value : values) {
				String name = getDataName(list, value);
				dataNames.add(name);
			}
			dataName = StringUtils.join(dataNames,",");
		}else {
			dataName = getDataName(list, dataValue);
		}
		return dataName;
	}
	
	private static String getDataName(List<TwbDataDic> dataDics, String dataValue) {
		String dataName = null;
		for (TwbDataDic dataDic : dataDics) {
			String dataValue2 = dataDic.getDataValue();
			if(dataValue.equals(dataValue2)) {
				dataName = dataDic.getDataName();
				break;
			}
		}
		return dataName;
	}
	
	/**
	 * @Title  dataName
	 * @Description 获取数据字典表 【dataName】 的值
	 
	 * @return
	 
	 * @author DSY
	 * @date 2018年2月22日 下午3:25:55
	 */
	/*public static Map<String, String> dataName() {
		return dataDicService.getDataNameMap();
	}*/
	
	/**
	 * @Title dataValue
	 * @Description 获取字典值
	 * @param typeCode
	 * @param dataName
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午3:58:49
	 */
	public static String dataValue(String typeCode, String dataName) {
		/*Map<String, String> map = dataDicService.getDataValueMap();
		if (!BeanUtils.isNullOrEmpty(map)) {
			Object aaa102 = map.get(typeCode+dataName);
			if (!BeanUtils.isNullOrEmpty(aaa102)) {
				return aaa102.toString();
			}
		}
		return "";*/
		String dataValue = null;
		List<TwbDataDic> list = dataDic(typeCode);
		for (TwbDataDic dataDic : list) {
			String dataName2 = dataDic.getDataName();
			if(dataName.equals(dataName2)) {
				dataValue = dataDic.getDataValue();
				break;
			}
		}
		return dataValue;
	}
	
	/**
	 * @Title  dataValue
	 * @Description 获取数据字典表 【dataValue】 的值
	 
	 * @return
	 
	 * @author DSY
	 * @date 2018年2月22日 下午3:26:56
	 */
	/*public static Map<String, String> dataValue() {
		return dataDicService.getDataValueMap();
	}*/
	
	/**
	 * @Title dataDic
	 * @Description 获取字典集合
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午4:00:07
	 */
	public static Map<String, List<TwbDataDic>> dataDic() {
		return dataDicService.getDataDicMap();
	}
	/**
	 * @Title dataDic
	 * @Description 获取字典列表
	 * @param typeCode
	 * @return
	 * @author DSY
	 * @date 2020年7月27日 下午4:00:43
	 */
	public static List<TwbDataDic> dataDic(String typeCode) {
		Map<String,List<TwbDataDic>> map = dataDicService.getDataDicMap();
		if (!BeanUtils.isNullOrEmpty(map)) {
			List<TwbDataDic> object = map.get(typeCode);
			if (object instanceof List) {
				return object;
			}
		}
		
		return null;
	}
	
	/**
	 * @Title getLoginUserConfig
	 * @Description 获取登录用户配置信息
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 下午12:07:09
	 */
	public static Map<String,String> getLoginUserConfig(){
		return userConfigService.getRedisLoginUserConfig();
	}
}
